package com.starryx.blog.service;

import com.starryx.blog.po.Blog;
import com.starryx.blog.vo.BlogQuery;
import org.codehaus.groovy.classgen.asm.BinaryLongExpressionHelper;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

public interface BlogService {

    // 根据id查询
    Blog getBlog(Long id);

    // 根据id查询并转化为 HTML
    Blog getAndConvert(Long id);

    // 根据查询条件分页查询
    Page<Blog> listBlog(Pageable pageable, BlogQuery blog);

    // 分页查询
    Page<Blog> listBlog(Pageable pageable);

    // 根据标签 id 查询
    Page<Blog> listBlog(Long tagId, Pageable pageable);

    // 查询前几个推荐的博客
    List<Blog> listRecommendBlogTop(Integer size);

    // 根据查询关键词分页查询
    Page<Blog> listBlog(String query, Pageable pageable);

    // 查询归档，返回年份及所有的博客列表
    Map<String, List<Blog>> archiveBlog();

    // 返回现有博客总数
    Long countBlog();

    // 保存
    Blog saveBlog(Blog blog);

    // 修改
    Blog updateBlog(Long id, Blog blog);

    // 删除
    void deleteBlog(Long id);
}
